<?php

class AlumnoController extends RController
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'rights', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionMiCalendarioEvaluacion(){
		$alumno = User::model()->with(array(
		'alumno',
		'alumno.curso.clases.evaluaciones',
		'alumno.curso.clases.asignatura',
		'alumno.curso.clases.evaluaciones.tipoEvaluacion'
		))->findByPk(Yii::app()->user->id)->alumno;
		if($alumno==null){
			Yii::app()->user->setFlash('error', 'No hay evaluaciones que mostrar');
			$this->redirect(array('site/index'));
		}else{
			$this->render('miCalendarioEvaluacion',array('alumno'=>$alumno));
		}
	}
		
	public function actionMisNotas(){
		$alumno = User::model()->with(array('alumno','alumno.curso.clases','alumno.curso.clases.evaluaciones','alumno.curso.clases.evaluaciones.tipoEvaluacion','alumno.curso.clases.evaluaciones.notas','alumno.curso.periodo','alumno.curso.periodo.estado'))->findByPk(Yii::app()->user->id)->alumno;
		if($alumno!=null && $alumno->notas!=null){
			$this->render('MisNotas',array('alumno'=>$alumno));
			
		}
		else{
			Yii::app()->user->setFlash('error', 'No hay notas que mostrar');
			$this->redirect(array('site/index'));
		}
	}
	
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	public function actionCreate(){
		$this->redirect('Matricular');
	}
	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionMatricular()
	{
		$user = new User;
		$model = new Alumno;
		$familiar = new Familiar;
		$validarFamiliares=true;
		$familiares[] = new Familiar;
		$seleccionar=true;
		$buscarFamiliar = new Familiar('search');
		$buscarFamiliar->unsetAttributes();
		if(isset($_GET['Familiar'])){
			$buscarFamiliar->attributes=$_GET['Familiar'];
		}
		if(isset($_POST['Familiar'],$_POST['User'],$_POST['Alumno'])){
			$user->attributes=$_POST['User']; //le pasamos la información de la forma User
			$user->foto=CUploadedFile::getInstance($user, 'foto');
			$validarUser = $user->validate();
			$validarAlumno= $model->validate();
			$model->attributes=$_POST['Alumno'];//le pasamos la info de la forma Alumno
			for($i=0;$i<3;$i++){ //recorremos los posibles familiares(0,1,2) 
				$familiares[$i]=new Familiar;//asignamos un nuevo familiar al arreglo de familiares 
				if(isset($_POST['id-padre'])){
						$familiares[0]=Familiar::model()->findByPk($_POST['id-padre']); //si se selecciono un familiar ya ingresado con su ID lo cargamos de la base de datos
					}
					elseif($i==0){
						foreach($_POST['Familiar'][0] as $dato=>$valor){
							$familiares[$i]->setAttribute($dato,$valor);//por cada data=> valor del formulario rellenamos los campos del nuevo familiar
						}
					}
					if(isset($_POST['id-madre'])){
						if(isset($_POST['id-padre']) && $_POST['id-madre']==$_POST['id-padre'])
							$seleccionar=false;
						$familiares[1]=Familiar::model()->findByPk($_POST['id-madre']);
						}
					elseif($i==1){
						foreach($_POST['Familiar'][1] as $dato=>$valor){
							$familiares[$i]->setAttribute($dato,$valor);//por cada data=> valor del formulario rellenamos los campos del nuevo familiar
						}
					}
					if(isset($_POST['id-suplente'])){
						$familiares[2]=Familiar::model()->findByPk($_POST['id-suplente']);
						if(isset($_POST['id-madre']) && $_POST['id-madre']==$_POST['id-suplente'])
							$seleccionar=false;
							
						if(isset($_POST['id-padre']) && $_POST['id-padre']==$_POST['id-suplente'])
							$seleccionar=false;
					}
					elseif($i==2){
					foreach($_POST['Familiar'][2] as $dato=>$valor){
							$familiares[$i]->setAttribute($dato,$valor);//por cada data=> valor del formulario rellenamos los campos del nuevo familiar
						}
					}
				}
				
			for($z=0;$z<3;$z++){
				$validarFamiliares=$familiares[$z]->validate() && $validarFamiliares; //validamos que los datos esten correctos	
			}
			if($validarUser && $validarAlumno && $validarFamiliares && $i==3 && $seleccionar){				
				$user->password=md5($user->password);
				//$user->foto_src='/'.'images'.'/'.'user'.'/'.$user->id.$user->username.'.'.$user->foto->extensionName;
				if(isset($user->foto) && $user->foto->error==0){
					$foto_src='/images/user'.'/'.$user->username.'/'.$user->username.'.'.$user->foto->extensionName;
					$user->setAttribute('foto_src', $foto_src);
				}
				$user->save(false);
				Rights::assign('Alumno', $user->id);
				if(isset($user->foto) && $user->foto->error==0){
					$carpeta=Yii::getPathOfAlias('webroot.images.user');
					if(!is_dir($carpeta.'/'.$user->username)){
						mkdir($carpeta.'/'.$user->username);
					}
					$carpeta=$carpeta.'/'.$user->username;
					$user->foto->saveAs($carpeta.'/'.$user->username.'.'.$user->foto->extensionName);
				}
				$model->user_id=$user->id;
				foreach($familiares as $f=>$familia){
					if($familia->isNewRecord){ //si vienen nuevos familiares los guardamos
						$familia->save(false);
					}
						
				}
				$model->familiars=$familiares; //asignamos el arreglo de objetos Familiar al Alumno (model)
				$model->save(false);
				foreach($familiares as $f=>$familia){
					$alumnoFamiliar = New AlumnoFamiliar;
					$alumnoFamiliar->alumno_idalumno=$model->idalumno;
					$alumnoFamiliar->familiar_idfamiliar=$familia->idfamiliar;
					$alumnoFamiliar->save(false);
				}
				Yii::app()->user->setFlash('success', "Alumno matriculado con éxito!");
				$this->redirect(array('view','id'=>$model->idalumno));
			}
			elseif(!isset($validarFamiliares)){
				Yii::app()->user->setFlash('error', "Debe completar todos los datos del formulario y seleccionar o registrar a los familiares!");
			}
			elseif(!$seleccionar){
				Yii::app()->user->setFlash('error', "Padre y madre no pueden ser iguales, además ninguno de éstos pueden ser apoderados suplentes!");
			}
		}
		$this->render('matricular',array(
						'user'=>$user,
						'model'=>$model,
						'buscarFamiliar'=>$buscarFamiliar,
						'familiar'=>$familiar,
						'familiares'=>$familiares,
			));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);
		$familiars=$model->familiars;
		$user = User::model()->findByPk($model->user_id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		if(isset($_POST['Alumno'],$_POST['User'],$_POST['Familiar']))
		{
			$model->attributes=$_POST['Alumno'];
			$user->attributes=$_POST['User'];
			$validarFamiliares=true;
			foreach($_POST['Familiar'] as $i=>$familiar){
				$familiars[$i]->attributes=$_POST['Familiar'][$i];
				$validarFamiliares= $familiars[$i]->validate() && $validarFamiliares;
				print_r($validarFamiliares);
			}
			$AlumnoValido=$model->validate();
			$UserValido=$user->validate();
			print_r($validarFamiliares);
			if($AlumnoValido && $UserValido && $validarFamiliares){
				$user->password=md5($user->password);
				$model->save(false);
				$user->save(false);
				foreach($familiars as $i=>$familiar){
					$familiar->save(false);
				}
				$this->redirect(array('view','id'=>$model->idalumno));
			}	
			
		}
		$this->render('update',array(
			'model'=>$model,
			'user'=>$user,
			'familiars'=>$familiars,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$model=$this->loadModel($id);
			$user=User::model()->findByPk($model->user_id);
			$user->activo=0;
			$user->save(false);
			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Solicitud inválida. Por favor, no repita esta solicitud de nuevo.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Alumno',array(
		'criteria'=>array(
			'with'=>array('familiars','user'),
		),
		
		));
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Alumno('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Alumno']))
			$model->attributes=$_GET['Alumno'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}
	
	public function actionCertificados()
	{
		$model=new Alumno('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Alumno']))
		$model->attributes=$_GET['Alumno'];
	
		$this->render('certificados',array(
				'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Alumno::model()->with(array('familiars','user','inasistencias'))->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'La solicitud no es válida.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='alumno-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
	public function actionPdf($id)
	{
		if($id!=null){
			$this->render('alumnoPdf',array('model'=>$this->loadModel($id),));
		}
		else
			throw new CHttpException(404,'La solicitud no es válida..');
	}
	
	public function actionListaAlumnoPdf()
	{
		$dataProvider = $_SESSION['datos_filtrados']->getData();
		
		if($dataProvider!=null){
			$this->render('listaAlumnoPdf',array(
				 'dataProvider'=>$dataProvider,));
		}
		else
			throw new CHttpException(404,'La solicitud no es válida..');
	}
	
	public function actionFichaMatricula($id)
	{
		if($id!=null){
			$this->render('fichaMatriculaPdf',array('model'=>$this->loadModel($id),));
		}
		else
			throw new CHttpException(404,'La solicitud no es válida..');
	}
	
	public function actionCerAlumnoRegular($id)
	{
		if($id!=null){
			$this->render('certAlumnoRegular',array('model'=>$this->loadModel($id),));
		}
		else
			throw new CHttpException(404,'La solicitud no es válida..');
	}
	
	public function actionCerMatricula($id)
	{
		if($id!=null){
			$this->render('certificadoMatricula',array('model'=>$this->loadModel($id),));
		}
		else
			throw new CHttpException(404,'La solicitud no es válida..');
	}
	
	
	
	public function actionMisInasistencias(){
		$model = User::model()->findByPk(Yii::app()->user->id)->alumno;
		if(!$model==null){
			$this->render('misInasistencias',array('model'=>$model));
		}
		else{
			Yii::app()->user->setFlash('error', 'Usted no es alumno');
			$this->redirect(array('site/index'));
		}
	}

	
	public function actionNotasClase($id){
	
		if($id!=null){
			$alumno = $this->loadModel($id);
			$this->render('misNotasPdf',array('alumno'=>$alumno));
		}
		else
		throw new CHttpException(404,'La página solicitada no existe.');
	
	}
	
}
